সময়সূচী আপডেট করা হচ্ছে
একটি টেবিলে বিদ্যমান রেকর্ডগুলি "আপডেট" বিবৃতি ব্যবহার করে আপডেট করা যেতে পারে:
উদাহরণ
ঠিকানা কলামটি "Valley 345" থেকে "Canyon 123" পর্যন্ত ওভাররাইট করুন:
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
let sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result.affectedRows + " record(s) updated");
});
});
আপডেট সিনট্যাক্সে WHERE ক্লজটি নোট করুন: WHERE ক্লজটি নির্দিষ্ট করে যে কোন রেকর্ড বা রেকর্ড আপডেট করা হবে। আপনি WHERE বিবৃতি বাদ দিলে, সমস্ত রেকর্ড আপডেট করা হবে!
উপরের কোডটি "demo_db_update.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:
C:\Users\Your Name>node demo_db_update.js
এটি আপনাকে এই ফলাফল দেবে:
1 record(s) updated
গুরুত্বপূর্ণ সতর্কতা:
- যেখানে বিবৃতি:সর্বদা WHERE ক্লজ ব্যবহার করুন
- সমস্ত এন্ট্রি:WHERE ছাড়া আপডেট করলে সব রেকর্ড আপডেট হবে
- ডেটা ক্ষতি:একটি ভুল আপডেট ডেটা ক্ষতির কারণ হতে পারে
- নিরাপত্তা অনুলিপি:আপডেট করার আগে গুরুত্বপূর্ণ ডেটার ব্যাকআপ নিন
উপসংহার মানে
একটি ক্যোয়ারী চালানোর সময়, একটি ফলাফল বস্তু ফিরে আসে।
ফলাফল বস্তু ক্যোয়ারী সময়সূচী প্রভাবিত কিভাবে সম্পর্কে তথ্য রয়েছে.
উপরের উদাহরণ থেকে প্রত্যাবর্তিত ফলাফল বস্তু এই মত দেখায়:
{
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '(Rows matched: 1 Changed: 1 Warnings: 0',
protocol41: true,
changedRows: 1
}
বৈশিষ্ট্য মান এই মত প্রদর্শিত হতে পারে:
উদাহরণ
প্রভাবিত সারির সংখ্যা ফেরত দিন:
console.log(result.affectedRows)
এটি এই ফলাফল তৈরি করবে:
1
| বৈশিষ্ট্য | ব্যাখ্যা | আপডেটের জন্য গুরুত্ব |
|---|---|---|
| affectedRows | সারির সংখ্যা মিলেছে | WHERE শর্তের সাথে মেলে মোট সারি |
| changedRows | সারির সংখ্যা পরিবর্তিত হয়েছে | মান আসলে পরিবর্তিত অ্যারে হয় |
| message | বিস্তারিত বার্তা | ম্যাচ, পরিবর্তন এবং সতর্কতা সম্পর্কে তথ্য |
| warningCount | সতর্কতার সংখ্যা | আপডেটের সময় সতর্কতাগুলি ঘটেছে৷ |
বিভিন্ন শর্ত সহ আপডেট করুন
একটি একক রেকর্ড আপডেট করা হচ্ছে
// Update single record by ID
let id = 5;
let newAddress = 'New Address 123';
let sql = "UPDATE customers SET address = ? WHERE id = ?";
con.query(sql, [newAddress, id], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
console.log("Records changed: " + result.changedRows);
});
একাধিক রেকর্ড আপডেট করা হচ্ছে
// Update multiple records
let oldCity = 'Old City';
let newCity = 'New City';
let sql = "UPDATE customers SET city = ? WHERE city = ?";
con.query(sql, [newCity, oldCity], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
// Update with IN operator
let ids = [1, 3, 7];
let status = 'active';
let sql = "UPDATE customers SET status = ? WHERE id IN (?)";
con.query(sql, [status, ids], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
একাধিক কলাম আপডেট করা হচ্ছে
// Update multiple columns
let id = 5;
let newName = 'John Updated';
let newAddress = 'Updated Address 456';
let newEmail = 'john.updated@email.com';
let sql = "UPDATE customers SET name = ?, address = ?, email = ? WHERE id = ?";
con.query(sql, [newName, newAddress, newEmail, id], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
উন্নত আপডেট কৌশল
মান গণনা করা হচ্ছে
// Update with calculated values
let sql = "UPDATE products SET price = price * 1.1 WHERE category = 'electronics'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
// Update with expressions
let sql = "UPDATE orders SET total_amount = quantity * unit_price WHERE status = 'pending'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
সাবকোয়েরি দিয়ে আপডেট করুন
// Update using subquery
let sql = `
UPDATE customers
SET premium = 1
WHERE id IN (
SELECT customer_id
FROM orders
WHERE total_amount > 1000
)
`;
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
CASE বিবৃতি দিয়ে আপডেট করুন
// Update with CASE statement
let sql = `
UPDATE products
SET discount =
CASE
WHEN price > 100 THEN 0.2
WHEN price > 50 THEN 0.1
ELSE 0
END
`;
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
নিরাপদ আপডেট পদ্ধতি
প্রথমে SELECT চেক করুন
// First check what will be updated
let id = 5;
con.query("SELECT * FROM customers WHERE id = ?", [id], function (err, result) {
if (err) throw err;
if (result.length > 0) {
console.log("Will update:", result[0]);
// Then proceed with update
let newAddress = 'Updated Address';
con.query("UPDATE customers SET address = ? WHERE id = ?", [newAddress, id], function (err, updateResult) {
if (err) throw err;
console.log("Records updated: " + updateResult.affectedRows);
});
} else {
console.log("No records found to update");
}
});
লেনদেন ব্যবহার করে
// Using transactions for safe update
con.beginTransaction(function(err) {
if (err) throw err;
let sql = "UPDATE customers SET address = ? WHERE id = ?";
con.query(sql, ['New Address', 5], function (err, result) {
if (err) {
return con.rollback(function() {
throw err;
});
}
console.log("Records updated: " + result.affectedRows);
// Commit the transaction
con.commit(function(err) {
if (err) {
return con.rollback(function() {
throw err;
});
}
console.log("Transaction completed successfully");
});
});
});
LIMIT দিয়ে আপডেট করুন
// Update with LIMIT for safety
let sql = "UPDATE customers SET status = 'inactive' WHERE last_login < '2023-01-01' LIMIT 10";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
সর্বোত্তম অনুশীলন আপডেট করুন
নিরাপত্তা
- সর্বদা WHERE ক্লজ ব্যবহার করুন
- এসকিউএল ইনজেকশন প্রতিরোধ করতে নেস্টেড ব্যবহার করুন
- আপডেট করার আগে গুরুত্বপূর্ণ ডেটার ব্যাকআপ নিন
- প্রোডাকশন ডাটাবেসে সরাসরি আপডেট এড়িয়ে চলুন
কর্মক্ষমতা
- ইনডেক্স কলাম ব্যবহার করে আপডেট করুন
- বড় আপডেটের জন্য LIMIT ব্যবহার করুন
- অপ্রয়োজনীয় কলাম আপডেট করা এড়িয়ে চলুন
- অপরিবর্তনীয় কলাম আপডেট করা এড়িয়ে চলুন
কোড গুণমান
- আপডেট করার আগে SELECT দিয়ে চেক করুন
- সঠিক ত্রুটি হ্যান্ডলিং এবং ট্র্যাকিং ব্যবহার করুন
- লেনদেন ব্যবহার করে নতুনত্ব নিশ্চিত করুন
- পড়ার জন্য প্রশ্ন তৈরি করুন
সম্পূর্ণ উদাহরণ
একটি সম্পূর্ণ উদাহরণ যা সমস্ত আপডেট কৌশল অন্তর্ভুক্ত করে:
const mysql = require('mysql');
// Create connection
const con = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "company_db"
});
// Connect to MySQL
con.connect((err) => {
if (err) {
console.error('Error connecting to MySQL:', err.message);
return;
}
console.log('Connected to MySQL database');
// Example 1: Basic UPDATE with WHERE
console.log('\n1. Basic UPDATE with WHERE:');
const oldAddress = 'Valley 345';
const newAddress = 'Canyon 123';
con.query("UPDATE customers SET address = ? WHERE address = ?", [newAddress, oldAddress], (err, result) => {
if (err) {
console.error('Error in update 1:', err.message);
return;
}
console.log(`Records affected: ${result.affectedRows}`);
console.log(`Records changed: ${result.changedRows}`);
console.log('Full result:', result);
});
// Example 2: UPDATE multiple columns
console.log('\n2. UPDATE multiple columns:');
const customerId = 5;
const updates = {
name: 'John Smith Updated',
email: 'john.updated@email.com',
phone: '+1234567890'
};
con.query(
"UPDATE customers SET name = ?, email = ?, phone = ? WHERE id = ?",
[updates.name, updates.email, updates.phone, customerId],
(err, result) => {
if (err) {
console.error('Error in update 2:', err.message);
return;
}
console.log(`Records affected: ${result.affectedRows}`);
}
);
// Example 3: Safe UPDATE with transaction
console.log('\n3. Safe UPDATE with transaction:');
con.beginTransaction((err) => {
if (err) {
console.error('Error starting transaction:', err.message);
return;
}
// First check what we're updating
const updateId = 3;
con.query("SELECT * FROM customers WHERE id = ?", [updateId], (err, selectResult) => {
if (err) {
return con.rollback(() => {
console.error('Error in select:', err.message);
});
}
if (selectResult.length > 0) {
console.log('Will update customer:', selectResult[0]);
// Perform update
const newStatus = 'premium';
con.query("UPDATE customers SET status = ? WHERE id = ?", [newStatus, updateId], (err, updateResult) => {
if (err) {
return con.rollback(() => {
console.error('Error in update:', err.message);
});
}
console.log(`Transaction - Records affected: ${updateResult.affectedRows}`);
// Commit transaction
con.commit((err) => {
if (err) {
return con.rollback(() => {
console.error('Error committing transaction:', err.message);
});
}
console.log('Transaction committed successfully');
// Close connection
setTimeout(() => {
con.end((err) => {
if (err) {
console.error('Error closing connection:', err.message);
return;
}
console.log('\nConnection closed');
});
}, 1000);
});
});
} else {
console.log('No customer found with ID:', updateId);
con.rollback(() => {
console.log('Transaction rolled back');
});
}
});
});
});